class MyPage extends BaseList {
    constructor(orderby, flag, $pagesize, $pagination, listUrl, onLineEditUrl, checkBoxName) {
        super(orderby, flag, $pagesize, $pagination, listUrl, onLineEditUrl, checkBoxName);
    }
    GetFilter(pageIndex) {
        let item = super.GetFilter(pageIndex);
        // 设置检索
        item['Flag'] = parseInt(this.flag);                                      // 对账类型 0-正常对账，1-强制对账
        item['HeaderId'] = parseInt(parent.$("#HeaderId").val());
        item['CycleOfBillFrom'] = $("#CycleOfBillFrom").val();
        item['CycleOfBillTo'] = $("#CycleOfBillTo").val();
        item['SupplierId'] = parseInt(parent.$("#SupplierId").val());
        item['PoNoFilterValue'] = $("#PoNoFilterValue").val();                   // 订单合同号
        item['StockInBillNoFilterValue'] = $("#StockInBillNoFilterValue").val(); // 入库单据号

        return JSON.stringify(item);
    }
    FetchAll() {
        $("#PoNoFilterValue").val("");
        $("#StockInBillNoFilterValue").val("");
        $("abbr.page_indicator_block,#wrapper__navbar").attr("_msh_page", 1);
        this.FetchForPage(1);
    }
    DoSearch() {
        //step 1、进行页面验证，失败则返回
        if ($("#CycleOfBillFrom").val() === '' && $("#CycleOfBillTo").val() === '') {
            ShowErrorMessagePanel('对账周期不能空。');
            $(".error-msg").css({top: '10px'});
            return false;
        }
        $("abbr.page_indicator_block,#wrapper__navbar").attr("_msh_page", 1);
        this.FetchForPage(1);
    }
    EmptyTableContent() {
        $("#tabData11 tbody").empty();
        $("abbr.page_indicator_block,#wrapper__navbar").attr("_msh_page", 1);
    }
    SetTableContent(result) {
        $("#tabData11 tbody").empty();
        let content_01 = '';
        this.rows = result.length;  // 设置表格中checkbox的数量为表格的行数
        this.numCheckbox = result.length;  // 设置表格中checkbox的数量为表格的行数
        for (let i = 0; i < result.length; i++) {
            let poId = result[i].poId; // 采购订单headerid
            let stockInId = result[i].stockInHeaderId; // 入库单标识
            content_01 += '<tr>';
            content_01 += '<td _poId="' + poId + '" style="text-align:center;"><label style="margin-left:1px;" class="btn" for="R-' + i + '-' + stockInId + '"><input id="R-' + i + '-' + stockInId + '" name="_check_row" type="checkbox" onclick="_Instance.DoCheckRow($(this),$(\'#checkall-header\'));" value="' + stockInId + '"/><i></i><span></span></label></td>';
            content_01 += '<td>' + formatNullData(result[i].poNo) + '</td>';              // 采购订单合同号
            content_01 += '<td>' + formatNullData(result[i].poTypeName) + '</td>';
            content_01 += '<td>' + formatNullData(result[i].signedDate) + '</td>';
            content_01 += '<td>' + formatNullData(result[i].orderArrivalDate) + '</td>';  // 计划到货日期
            content_01 += '<td>' + formatNullData(result[i].purchasedByName) + '</td>';   // 采购担当
            content_01 += '<td>' + formatNullData(result[i].stockInBillNo) + '</td>';
            content_01 += '<td>' + formatNullData(result[i].arrivalDate) + '</td>';       // 实际到货日期
            content_01 += '<td>' + formatNullData(result[i].wayBillNo) + '</td>';         // 货单号
            content_01 += '<td>' + formatNullData(result[i].styleNo) + '</td>';           // 款号
            content_01 += '<td style="border-right:none;">' + formatNullData(result[i].stockInDate) + '</td>'; // 入库日期
            content_01 += '</tr>';
            $("#tabData11 tbody").append(content_01);
            content_01 = '';
        }
        setOneTableRowColor("tabData11");
        this.ResetSelectRowStatus();
    }
    // 设置行选择后的状态
    SetRowStatus($self) {
        super.AdjustRowStatus($self, ($row, index) => {
            let key = $("abbr.page_indicator_block,#wrapper__navbar").attr("_msh_page") + "-" + index;         // 格式（当前页号-当前行索引）
            let item = {};
            item["stockInHeaderId"] = $self.val();;
            item["poHeaderId"] = $row.find("td").eq(0).attr("_poId");
            item["styleNo"] = $row.find("td").eq(9).text();
            item["stockInBillNo"] = $row.find("td").eq(6).text();
            item["stockInDate"] = $row.find("td").eq(10).text();
            this.selectedItemList[key] = item;
        }, ($row, index) => {
            let key = $("abbr.page_indicator_block,#wrapper__navbar").attr("_msh_page") + "-" + index;         // 格式（当前页号-当前行索引）
            delete this.selectedItemList[key];
        });
    }
    // 每次翻页都恢复选定结果
    ResetSelectRowStatus() {
        let _this = this;
        $("#tabData11 tbody").find("tr").each((index) => {
            let key = $("abbr.page_indicator_block,#wrapper__navbar").attr("_msh_page") + "-" + index;          // 格式（当前页号-当前行索引）
            if (_this.selectedItemList[key] !== undefined) {
                let item = _this.selectedItemList[key];
                if ((parseInt(item["poHeaderId"]) === parseInt($(this).find("td").eq(0).attr("_poId"))) &&
                        (item["stockInBillNo"] === $(this).find("td").eq(6).text()) &&
                        (item["styleNo"] === $(this).find("td").eq(9).text()) &&
                        (item["dateOfStockIn"] === $(this).find("td").eq(10).text()) &&
                        (parseInt(item["stockInHeaderId"]) === parseInt($(this).find("td").eq(0).find("input[type='checkbox'][name='_check_row']").eq(0).val()))
                        ) {
                    $(this).children("td").eq(0).children("label").eq(0).children("input[type='checkbox'][name='_check_row']").eq(0).prop('checked', true);
                    $(this).addClass("row__selected");
                }
            }
        });
        // 设置选择全部的状态
        let n = $("input[type='checkbox'][name='_check_row']:checked").length;
        if (n < $("#tabData11 tbody").find("tr").length || n === 0) {
            $("#checkall-header").prop("checked", false);
        } else {
            $("#checkall-header").prop("checked", true);
        }
    }
    // 执行对账
    DoAccountPayabled() {
        // 判断是否做了选择
        if (Object.keys(this.selectedItemList).length > 0) {
            let result = [];
            for (let key in this.selectedItemList) {
                let item = this.selectedItemList[key];
                result.push(parseInt(item["stockInHeaderId"]));
            }
            parent.arrChoice.push(result);
            parent.choice_success = true;
        } else {
            parent.choice_success = false;
        }
        closePopupWnd();
    }
    SortTable(orderBy) {
        this.orderby = orderBy;
        // 得到排序数据
        this.FetchForPage(1);
    }
    // 上个月的第一天
    GetPrevMonthFirstDay(_year, _month) {
        let myDate = new Date(_year, _month, 0);
        let year = myDate.getFullYear();
        let month = myDate.getMonth();
        if (month === 0) {
            month = 12;
            year = year - 1;
        }
        return year + "-" + month + "-" + "1";
    }
    // 本月的最后一天
    GetCurrentMonthLastDay(_year, _month) {
        let myDate = new Date(_year, _month, 0);
        return _year + "-" + _month + "-" + myDate.getDate();
    }
}

let _Instance = null;

//-----------------------------------------------------------------------------
// 页面初始化
//-----------------------------------------------------------------------------
function onPageReady() {
    let flag = jQuery.url.param("flag") === undefined ? 0 : jQuery.url.param("flag");
    _Instance = new MyPage(null, flag, null, $("abbr.page_indicator_block,#wrapper__navbar"),
            "/purchase/notes_payabled/account_payable/fetchForPage.html",
            "",
            "_check_row");

    // 初始化条件
    $("#CycleOfBillFrom").val(_Instance.GetPrevMonthFirstDay(parent.$("#YearOfBill").val(), parent.$("#MonthOfBill").val()));
    $("#CycleOfBillTo").val(_Instance.GetCurrentMonthLastDay(parent.$("#YearOfBill").val(), parent.$("#MonthOfBill").val()));
    if (parseInt(flag) === 0) {
        // $("#CycleOfBillFrom").hide();
        // $("#CycleOfBillTo").hide();
    }
    // 设置分页控制 （操作区域）
    $("#wrapper__navbar").swPagination({
        link_string: '/?page={page_number}',
        max_page: null,
        paged: function (page) {
            $("abbr.page_indicator_block,#wrapper__navbar").attr("_msh_page", page);
            _Instance.FetchForPage(page);
        }
    });
    window.laydate.render({
        elem: '#CycleOfBillFrom',
        theme: '#393D49',
        trigger: 'click'
    });
    window.laydate.render({
        elem: '#CycleOfBillTo',
        theme: '#393D49',
        trigger: 'click'
    });
    _Instance.OnPageLoad();
}

// 画面大小或者位置移动
function onPageResize() {
}